1
Mô hình Thực thi SIMT và Phân chia Warps
AI032Lesson 6
00:00

Đây là SIMT (Đơn chỉ thị, Nhiều luồng) mô hình là nhịp đập trung tâm của kiến trúc GPU. Trong khi bạn lập trình từng luồng riêng biệt, phần cứng sẽ điều phối chúng thành một cấu trúc phân cấp hai tầng gồm các lướicác khối. Để tối đa hóa hiệu suất, phần cứng tiếp tục chia nhỏ các khối này thành các đơn vị gồm 32 luồng được gọi là warps.

1. SIMT so với SIMD

Khác với SIMD trên CPU (như SSE/AVX), nơi bạn phải tự đóng gói dữ liệu vào thanh ghi, SIMT cho phép các luồng dường như độc lập với nhau. Phần cứng sẽ tự động nhóm các luồng thành các warp, lấy một lệnh duy nhất để thực thi đồng bộ trên toàn bộ 32 luồng.

2. Quy tắc Chuyển đổi tuyến tính

Người lập trình sử dụng threadIdx.x, y, z để lập luận, nhưng phần cứng chuyển đổi điều này thành một chuỗi 1 chiều để lên lịch:

Chỉ số = x + (y × blockDim.x) + (z × blockDim.x × blockDim.y)
Khối 2D(8 × 8)Warp 0: ID 0-31Warp 1: ID 32-63

Bởi vì phương x là chỉ số thay đổi nhanh nhất, các luồng có giá trị threadIdx.x liên tiếp thường rơi vào cùng một warp, điều này rất quan trọng đối với tập hợp bộ nhớ.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>